package com.itheima.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

/**
 * 引入配置文件*/
@PropertySource(value = "classpath:db.properties")
public class DaoConfig {
    /*如果要是用配置文件的内容   需要先引入配置文件*/
//如果要使用配置文件的内容 需要先引入配置文件

    //支持el表达式 读取配置文件的key   @Value就相当于将配置文件中的值通过el表达式的方式将值拿出来
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    /**
     * 此方法表示创建QueryRunner
     * 配置queryRunner
     * @Bean  声明在方法上 意义是 将方法的返回值放入到容器中
     * name的名称无所谓  只要名称是唯一的就可以了
     * */

    @Bean(name = "queryRunner")
    public QueryRunner createQueryRunner(DataSource dataSource) {  //参数会自动从容器中获取类型对象  注入过来  Spring 5.0才可以

        QueryRunner queryRunner = new QueryRunner(dataSource);
        return queryRunner;
    }

    /**
     * 名称无所谓   只要id是唯一的就可以了
     * */
    @Bean(name = "dataSource")
    public DataSource createDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }


}
